--
-- Created by IntelliJ IDEA.
-- User: dz
-- Date: 2017/3/3
-- Time: 10:49
-- To change this template use File | Settings | File Templates.
--
function string:split(sep)
    local sep, fields = sep or ",", {};
    local pattern = string.format("([^%s]+)", sep);
    self:gsub(pattern, function(c) fields[#fields + 1] = c end);
    return fields;
end

local momentId = ARGV[1]; --动态id
local publisherId = ARGV[3]; --发布者id
local fansIdStr = ARGV[4]; --粉丝id的数组
local fansIds = fansIdStr:split(",");
local moment = ARGV[5]; --动态的json
local sequence = ARGV[2]; --自增id

redis.call("hset", "moments", momentId, moment);
local momentKey = momentId .. '_count';
redis.call("hset", momentKey, "seenCount", "0");
redis.call("hset", momentKey, "likedCount", "0");
redis.call("hset", momentKey, "commentsCount", "0");
redis.call("hset", momentKey, "giftsCount", "0");
redis.call("hincrby", publisherId .. "_info", "momentCount", 1);

--循环关注我的人的列表，将 动态id、发布者id、发布时间戳、第一张图片url、媒体类型、图片数量写到时间线里面
--时间线有两条：一个是我关注的人加上我自己发布的帖子的时间线，一个是只包含自己发布的帖子的时间线 时间线使用有序集合 zset数据结构
local publisherTimelineName = publisherId .. ':tls';
redis.call("zadd", publisherTimelineName, sequence, momentId);
for k, v in pairs(fansIds) do
    --写时间线
    local fansTimeLineName = v .. ':tl'; --粉丝的时间线名称
    --timezone作为排序规则
    --member包含一些基本信息
    redis.call("zadd", fansTimeLineName, sequence, momentId);
end
return true;
